picture: Don't cause warnings on load failures
authorBenjamin Otte <otte@redhat.com>
Fri, 29 Mar 2019 04:36:12 +0000 (05:36 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 29 Mar 2019 08:56:52 +0000 (09:56 +0100)
When a file set via gtk_picture_set_file() can't be loaded, just
silently don't load it.

Reftest picture-load-invalid-file added for that case.

gtk/gtkpicture.c
testsuite/reftests/meson.build
testsuite/reftests/picture-load-invalid-file.ref.ui [new file with mode: 0644]
testsuite/reftests/picture-load-invalid-file.ui [new file with mode: 0644]

index 3dc7c9b91be765d30a75d7140a27d16a4fbab0f4..b6ecd2f696211c8fde3b1728ce473da7d054c8d7 100644 (file)
@@ -604,6 +604,7 @@ load_scalable_with_loader (GFile *file,
 out2:
   g_bytes_unref (bytes);
 out1:
+  gdk_pixbuf_loader_close (loader, NULL);
   g_object_unref (loader);
 
   return result;
@@ -637,7 +638,7 @@ gtk_picture_set_file (GtkPicture *self,
 
   paintable = load_scalable_with_loader (file, gtk_widget_get_scale_factor (GTK_WIDGET (self)));
   gtk_picture_set_paintable (self, paintable);
-  g_object_unref (paintable);
+  g_clear_object (&paintable);
 
   g_object_thaw_notify (G_OBJECT (self));
 }
index 3a1f9ac688dc380f05ea98a7d7fc8c93512bf8de..597939d6c04c5c208858eee5dd123b4a83e480ed 100644 (file)
@@ -328,6 +328,8 @@ testdata = [
   'paned-undersized.css',
   'paned-undersized.ref.ui',
   'paned-undersized.ui',
+  'picture-load-invalid-file.ui',
+  'picture-load-invalid-file.ref.ui',
   'pseudoclass-on-box.css',
   'pseudoclass-on-box.ref.ui',
   'pseudoclass-on-box.ui',
diff --git a/testsuite/reftests/picture-load-invalid-file.ref.ui b/testsuite/reftests/picture-load-invalid-file.ref.ui
new file mode 100644 (file)
index 0000000..3500931
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkWindow" id="window1">
+    <property name="type">popup</property>
+    <child>
+      <object class="GtkPicture">
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/testsuite/reftests/picture-load-invalid-file.ui b/testsuite/reftests/picture-load-invalid-file.ui
new file mode 100644 (file)
index 0000000..8ca26cf
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkWindow" id="window1">
+    <property name="type">popup</property>
+    <child>
+      <object class="GtkPicture">
+        <property name="file">does://not.com/exist.png</property>
+      </object>
+    </child>
+  </object>
+</interface>